﻿namespace ProblemsSet
{
    public class Problem_71 : BaseProblem
    {
        public override object GetResult()
        {
            const double max = 3/(double)7;
            const double min = 2/(double)5;
            const int cnt = 1000000;

            var res = min;
            long val = 2;

            for (long d = 2; d <= cnt; d++)
            {
                var mx = (long) (max*(double)d);
                var mn = (long) (res*(double)d);
                for (var n = mx; n > mn; n--)
                {
                    var tmp = n/(double)d;
                    if (tmp <= res) continue;
                    if (tmp >= max) continue;
                    res = tmp;
                    val = n/MathLogic.GetNOD(n, d);
                }
            }
            return val;
        }

        public override string Problem
        {
            get
            {
                return @"Consider the fraction, n/d, where n and d are positive integers. If nd and HCF(n,d)=1, it is called a reduced proper fraction.

If we list the set of reduced proper fractions for d  8 in ascending order of size, we get:

1/8, 1/7, 1/6, 1/5, 1/4, 2/7, 1/3, 3/8, 2/5, 3/7, 1/2, 4/7, 3/5, 5/8, 2/3, 5/7, 3/4, 4/5, 5/6, 6/7, 7/8

It can be seen that 2/5 is the fraction immediately to the left of 3/7.

By listing the set of reduced proper fractions for d  1,000,000 in ascending order of size, find the numerator of the fraction immediately to the left of 3/7.";
            }
        }

        public override bool IsSolved
        {
            get
            {
                return true;
            }
        }

        public override object Answer
        {
            get
            {
                return 428570;
            }
        }

    }
}
